const int  squbutton = 2;    
const int squled = 5;     
const int  bandbutton = 3;    
const int bandled = 6;      
 const int  freqbuttonUp = 4; 

int squbuttonPushCounter = 0;   
int squbuttonState = 0;         
int squlastButtonState = 0;     

int bandbuttonPushCounter = 0;   
int bandbuttonState = 0;         
int bandlastButtonState = 0;     

 #include <Adafruit_GFX.h>
 #include <Adafruit_PCD8544.h>
 #include <SPI.h>
 
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);

int ch, sensorValue;
int sensorValuedec;
int ch_old = 1;

// set parameters for DRA818V
int bw = 0;                              // bandwith in KHz ( 0 = 12.5 or 1 = 25 )
double ftx;                              // tx frequency in MHz (134.0000 - 174.0000)
double frx;                              // rx frequency in MHz (134.0000 - 174.0000) 
String tx_ctcss = "0000";                   // ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"  
String rx_ctcss = "0000"; 
String stn;
// ctcss frequency ( 0000 - 0038 ); 0000 = "no CTCSS"  
int squ = 0;                                // squelch level  ( 0 - 8 ); 0 = "open"  

void setup()
{
  Serial.begin(9600);                      // open serial at 9600 bps
  display.begin();
  display.setContrast(60);
  display.display();
  delay(2000);
pinMode(squbutton, INPUT);
pinMode(squled, OUTPUT);
pinMode(bandbutton, INPUT);
pinMode(bandled, OUTPUT);
pinMode(bandbutton, INPUT);
pinMode(freqbuttonUp, INPUT);
}

void loop()
{
sensorValue = analogRead(0);
sensorValuedec = analogRead(1);
ch = ((sensorValue/105)+((sensorValuedec/200)*10));    



if (ch != ch_old)
{
  //------------------------------------------------------------2m
     if (ch == 0) { ftx = 149.0625; frx = 149.0625;stn = "FRN 3";}    
else if (ch == 1) { ftx = 145.3250; frx = 145.3250;stn = "Sven";}    
else if (ch == 2) { ftx = 145.4000; frx = 145.4000;stn = "Christian";}    
else if (ch == 3) { ftx = 149.0875; frx = 149.0875;stn = "FRN 4";}     
else if (ch == 4) { ftx = 149.1000; frx = 149.1000;stn = "FRN 5";}    
else if (ch == 5) { ftx = 149.1125; frx = 149.1125;stn = "FRN 6";}    
else if (ch == 6) { ftx = 149.0250; frx = 149.0250;stn = "FRN 1";}   
else if (ch == 7) { ftx = 149.0375; frx = 149.0375;stn = "FRN 2";}    
else if (ch == 8) { ftx = 149.0500; frx = 149.0500;stn = "FRN 3";}    
else if (ch == 9) { ftx = 149.0875; frx = 149.0875;stn = "FRN 4";}    


else if (ch == 10){ ftx = 145.1375; frx = 145.7375;stn = "DB0DO";tx_ctcss = "0001";} 
else if (ch == 11){ ftx = 145.0250; frx = 145.6250;stn = "DB0VEL";}  
else if (ch == 12) { ftx = 145.0500; frx = 145.6500;stn = "DB0WE";tx_ctcss = "0001";}    
else if (ch == 13) { ftx = 145.0750; frx = 145.6750;stn = "DB0VR";tx_ctcss = "0001";}    
else if (ch == 14) { ftx = 145.2875; frx = 145.2875;stn = "DM0ZFG";tx_ctcss = "0001";}    
else if (ch == 15) { ftx = 145.1625; frx = 145.7625;stn = "DM0DOS";tx_ctcss = "0018";}   
else if (ch == 16) { ftx = 144.3500; frx = 144.3500;}    
else if (ch == 17) { ftx = 144.3625; frx = 144.3625;}    
else if (ch == 18) { ftx = 144.3750; frx = 144.3750;}    
else if (ch == 19) { ftx = 144.4000; frx = 144.4000;}

else if (ch == 20) { ftx = 145.2000; frx = 145.8000;tx_ctcss = "0001";}   
else if (ch == 21) { ftx = 155.1800; frx = 155.1800;stn = "TAXI";}    
else if (ch == 22) { ftx = 155.1900; frx = 155.1900;stn = "TAXI";}
else if (ch == 23) { ftx = 446.00625; frx = 446.00625;stn = "PMR 1";}    
else if (ch == 24) { ftx = 446.01875; frx = 446.01875;stn = "PMR 2";}   
else if (ch == 25) { ftx = 446.03125; frx = 446.03125;stn = "PMR 3";}
else if (ch == 26) { ftx = 446.04375; frx = 446.04375;stn = "PMR 4";}    
else if (ch == 27) { ftx = 446.05625; frx = 446.05625;stn = "PMR 5";}    
else if (ch == 28) { ftx = 446.06875; frx = 446.06875;stn = "PMR 6";}    
else if (ch == 29) { ftx = 446.08125; frx = 446.08125;stn = "PMR 7";}    
else if (ch == 30) { ftx = 446.09375; frx = 446.09375;stn = "PMR 8";}   
else if (ch == 31) { ftx = 446.10625; frx = 446.10625;stn = "PMR 9";}    
else if (ch == 32) { ftx = 446.11875; frx = 446.11875;stn = "PMR 10";}    
else if (ch == 33) { ftx = 446.13125; frx = 446.13125;stn = "PMR 11";}    
else if (ch == 34) { ftx = 446.14375; frx = 446.14375;stn = "PMR 12";}    
else if (ch == 35) { ftx = 446.15625; frx = 446.15625;stn = "PMR 13";}   
else if (ch == 36) { ftx = 446.16875; frx = 446.16875;stn = "PMR 14";}
else if (ch == 37) { ftx = 446.18125; frx = 446.18125;stn = "PMR 15";}    
else if (ch == 38) { ftx = 446.19375; frx = 446.19375;stn = "PMR 16";}    
else if (ch == 39) { ftx = 446.20000; frx = 446.06875;stn = "PMR 17";}  

else if (ch == 40) { ftx = 431.0500; frx = 438.6500;tx_ctcss = "0001";stn = "DB0DO";}    
else if (ch == 41) { ftx = 431.0125; frx = 438.6125;tx_ctcss = "0001";stn = "DB0WAT";}    
else if (ch == 42) { ftx = 431.2250; frx = 438.8250;tx_ctcss = "0001";stn = "DB0BS";}    
else if (ch == 43) { ftx = 431.2500; frx = 438.8500;tx_ctcss = "0001";stn = "DB0WES";}   
else if (ch == 44) { ftx = 431.1000; frx = 438.7000;tx_ctcss = "0018";stn = "DB0VEL";}
else if (ch == 45) { ftx = 431.5750; frx = 439.1750;tx_ctcss = "0001";stn = "DB0EN";}   
else if (ch == 46) { ftx = 431.6250; frx = 439.2250;tx_ctcss = "0001";stn = "DB0HAT";}
else if (ch == 47) { ftx = 431.6625; frx = 439.2625;tx_ctcss = "0001";stn = "DB0MHS";}    
else if (ch == 48) { ftx = 431.7000; frx = 439.3000;tx_ctcss = "0001";stn = "DB0WET";}    
else if (ch == 49) { ftx = 431.7250; frx = 439.3250;tx_ctcss = "0001";stn = "DB0PL";} 
else if (ch == 50) { ftx = 431.2750; frx = 438.8750;tx_ctcss = "0001";stn = "DB0QH";}  
else if (ch == 51) { ftx = 431.5500; frx = 439.1500;tx_ctcss = "0001";stn = "DB0LR";}   



squbuttonState = digitalRead(squbutton);

if (squbuttonState != squlastButtonState) {
if (squbuttonState == HIGH) {
    squbuttonPushCounter++;} 
    delay(50);}
 
squlastButtonState = squbuttonState;

if (squbuttonPushCounter % 2 == 0) {
    digitalWrite(squled, HIGH);
    squ = 1;} 
    else {digitalWrite(squled, LOW);
    squ = 0;}


bandbuttonState = digitalRead(bandbutton);

if (bandbuttonState != bandlastButtonState) {
if (bandbuttonState == HIGH) {
    bandbuttonPushCounter++;} 
    delay(50);}
 
bandlastButtonState = bandbuttonState;

if (bandbuttonPushCounter % 2 == 0) {
    digitalWrite(bandled, HIGH);
    bw = 0;} 
    else {digitalWrite(bandled, LOW);
    bw = 1;}
    


  Serial.print("AT+DMOSETGROUP=");         // begin message but don't send yet..
  Serial.print(bw);
  Serial.print(",");
  Serial.print(ftx,4); 
  Serial.print(",");
  Serial.print(frx,4);
  Serial.print(",");
  Serial.print(tx_ctcss);
  Serial.print(",");
  Serial.print(squ);
  Serial.print(",");
  Serial.println(rx_ctcss);

  display.clearDisplay(); 
    
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,5);
  display.print(frx,4);
  
  display.setTextSize(1);
  display.setCursor(0,18);
  display.print("Ch.");
  display.print(ch+1);

  display.setTextSize(1);
  display.setCursor(0,30);
  display.print(stn);

display.setTextSize(1);
  display.setCursor(0,40);
  display.print("Band:");
  if (bw == 1)
   {display.print("WFM");}
  else {display.print("NFM");}  
  
  display.setCursor(50,40);
  display.print("Squ:");
  display.print(squ);

 
  
  

  display.display();
  delay(100);
  ch_old = ch;
  
 }
 
}